package com.yykj.hospital.server.service;

import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult;
import com.yykj.common.vo.PageData;
import com.yykj.hospital.client.dto.DoctorDTO;
import com.yykj.hospital.client.dto.DoctorInfoDTO;
import com.yykj.hospital.server.dto.*;
import com.yykj.hospital.client.dto.HospitalDepartmentDTO;
import com.yykj.hospital.client.dto.HotDoctorDTO;
import com.yykj.hospital.server.form.*;
import com.yykj.hospital.server.model.entity.HospitalDoctor;
import org.springframework.data.domain.Page;

import java.util.List;
import java.util.Map;

public interface HospitalDoctorService {
    HotDoctorDTO editHotDoctor(HospitalHotDoctorEditForm form);

    void deleteHotDoctor(String doctorId);

    List<HotDoctorDTO> listHotDoctor(Integer hospitalId);

    List<DoctorDTO> getHospitalDoctor(ProtoDoctorSearchForm searchForm);

    DoctorDTO editDoctor(DoctorEditForm doctorEditForm);

    DoctorDTO info(String id);

    void resetSelfPassword(ResetDoctorPasswordForm form);

    void resetPassword(String doctorId);

    boolean checkDoctorList(Integer hospitalId, ExcelImportResult<DoctorImportDTO> result);

    void importDoctorList(Integer hospitalId,List<DoctorImportDTO> list);

    Map<String, HospitalDepartmentDTO> getHospitalDepartmentDTOMap(Integer hospitalId);

    List<DoctorHomeOnlineDTO> listHomeExpertDoctor(Integer hospitalId);

    DoctorLoginInfo login(DoctorLoginForm form);

    List<DoctorHomeOnlineDTO> listHomeDoctor(HomeSearchDoctorForm form);

    DoctorLoginInfo loginWithCode(DoctorLoginForm form);


    PageData<DoctorDTO> listHospitalDoctorWithPage(DoctorSearchForm searchForm);

    void resetPassword(DoctorLoginForm form);

    boolean doctorInfoChange(DoctorDTO doctorDTO);

    void editDoctorSign(DoctorSignDTO doctorSignDTO);

    DoctorSignDTO viewDoctorSign(String doctorId);
    DoctorHomeOnlineDTO viewHomeDoctor(String doctorId);

    HospitalDoctor getHospitalDoctorByMobile(String mobile);

    List<DoctorInfoDTO> doctorSearchDoctor(DoctorSearchForm searchForm);

    void updateDoctorRemoteInfo(HospitalDoctor doctor);
}
